package com.mall.admin.service;

import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mall.commons.utils.R;
import com.mall.domain.UmsMenu;
import com.mall.interface1.api.UmsMenuApi;
import com.mall.vo.UmsAdminPageVo;
import com.mall.vo.UmsMenuVo;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UmsMenuService {
    @DubboReference
    private UmsMenuApi umsMenuApi;
    public R save(UmsMenu umsMenu) {
        umsMenuApi.save(umsMenu);
       return R.success("",null);
    }
       //进行删除时要判断他是否有子数据
    public R delete(Integer id) {
        //根据id查询
      List<Long> ids =umsMenuApi.querySon(id);
      if(ids.isEmpty()){
          umsMenuApi.deleteById(id);
      }else {
          umsMenuApi.delete(ids);
          umsMenuApi.deleteById(id);
      }
      return R.success("",null);
    }
    public R list(Integer pageNum, Integer pageSize, Integer parentId) {
        IPage<UmsMenu> iPage = umsMenuApi.list(pageNum,pageSize,parentId);
        UmsAdminPageVo<UmsMenu> vo = new UmsAdminPageVo<>();
        vo.setTotalPage((int) iPage.getPages());
        vo.setList(iPage.getRecords());
        vo.setTotal((int) iPage.getTotal());
        vo.setPageNum(pageNum);
        vo.setPageSize(pageSize);
        return R.success("",vo);
    }

    // TODO: 2022/12/16 有待改进 
    public R listTree() {
        List<UmsMenuVo> umsMenuVos = umsMenuApi.listTree();
        return R.success("",umsMenuVos);
    }

    public R update(Integer id,UmsMenu umsMenu) {
        umsMenu.setId(Convert.toLong(id));
        umsMenuApi.update(umsMenu);
        return R.success("",null);
    }

    public R updateHidden(Integer hidden, Integer id) {
        UmsMenu umsMenu=umsMenuApi.selectId(id);
        if(umsMenu!=null){
            umsMenu.setHidden(hidden);
        }
        umsMenuApi.update(umsMenu);
        return R.success("",null);
    }

    public R get(Integer id) {
        UmsMenu umsMenu = umsMenuApi.selectId(id);
        return R.success("",umsMenu);
    }
}
